package br.com.diego.system.entity.permissao;

import br.com.diego.system.entity.AbstractDiegoEntity;
import br.com.diego.system.entity.componente.Componente;
import br.com.diego.system.entity.usuario.Usuario;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.hibernate.envers.Audited;

@Entity
@Audited
@Table(uniqueConstraints =
@UniqueConstraint(columnNames = {"usuario_id", "componente_id"}))
public class Permissao extends AbstractDiegoEntity {

    @ManyToOne
    @JoinColumn(nullable = false)
    @PrimaryKeyJoinColumn
    private Usuario usuario;
    
    @ManyToOne
    @JoinColumn(nullable = false)
    @PrimaryKeyJoinColumn
    private Componente componente;
    
    @Column(nullable = false, length = 20)
    @Enumerated(EnumType.STRING)
    private Tipo tipo;

    public Componente getComponente() {
        return componente;
    }

    public void setComponente(Componente componente) {
        this.componente = componente;
    }

    public Tipo getTipo() {
        return tipo;
    }

    public void setTipo(Tipo tipo) {
        this.tipo = tipo;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
}
